This in-class exercise is a short recap of what is covered in Hands-on Exercise 4, with some concepts being reiterated again.
packages = c('sf', 'spatstat', 'raster', 'maptools', 'tmap', 'tidyverse')
for (p in packages){
if(!require(p, character.only = T)){
install.packages(p)
}
library(p,character.only = T)
}
sg_sf <- st_read(dsn="data/shapefile",
layer="CostalOutline")
Reading layer `CostalOutline' from data source
`C:\Users\user\Desktop\SMU\Y4S1\IS415\geniceee\IS415_blog\_posts\2021-09-06-in-class-exercise-4\data\shapefile'
using driver `ESRI Shapefile'
Simple feature collection with 60 features and 4 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 2663.926 ymin: 16357.98 xmax: 56047.79 ymax: 50244.03
Projected CRS: SVY21
mpsz_sf <- st_read(dsn="data/shapefile",
layer="MP14_SUBZONE_WEB_PL")
Reading layer `MP14_SUBZONE_WEB_PL' from data source
`C:\Users\user\Desktop\SMU\Y4S1\IS415\geniceee\IS415_blog\_posts\2021-09-06-in-class-exercise-4\data\shapefile'
using driver `ESRI Shapefile'
Simple feature collection with 323 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 2667.538 ymin: 15748.72 xmax: 56396.44 ymax: 50256.33
Projected CRS: SVY21
childcare <- read_rds("data/rds/childcare.rds")
CHAS <- read_rds("data/rds/CHAS.rds")
CHAS_sf <- st_as_sf(CHAS,
coords = c("X_COORDINATE", "Y_COORDINATE"),
crs=3414)
Note: For CHAS dataset, there are columns which are X and Y coordinates. This means that the dataset is in SVY21, and we only need to assign EPSG code of 3414
childcare$Lat <- as.numeric(childcare$Lat)
childcare$Lng <- as.numeric(childcare$Lng)
childcare_sf <- st_as_sf(childcare,
coords = c("Lng", "Lat"),
crs=4326) %>%
st_transform(crs=3414)
Note: Childcare dataset lat and long columns are in decimal degrees. This means that the dataset is in WGS84, so we will need to assign EPSG code of 4326 before transforming the decimal degrees to metres (SVY21) using st_transform
childcare <- as_Spatial(childcare_sf)
CHAS <- as_Spatial(CHAS_sf)
mpsz <- as_Spatial(mpsz_sf)
sg <- as_Spatial(sg_sf)
childcare_sp <- as(childcare,"SpatialPoints")
CHAS_sp <- as(CHAS,"SpatialPoints")
sg_sp <- as(sg,"SpatialPolygons")
Key difference between Spatial* classes and sp format: - Spatial* classes still have associated data - sp format will drop data table, will only leave geometries
childcare_ppp <- as(childcare_sp, "ppp")
CHAS_ppp <- as(CHAS_sp, "ppp")
tmap_mode('view')
tm_shape(childcare_sf) +
tm_dots(alpha=0.4, col="blue", size=0.05) +
tm_shape(CHAS_sf) +
tm_dots(alpha=0.4, col="red", size=0.05)
tmap_mode('plot')